package com.li.bean.factory;

import org.springframework.beans.factory.FactoryBean;

/**
 * 工厂类
 *
 * PersonFactoryBean也是一个bean，只不过这个Bean比较特殊，叫做工厂bean
 * 通过工厂bean这个特殊的bean可以获取一个普通的bean
 */
public class PersonFactoryBean implements FactoryBean<Person> {
    @Override
    public Person getObject() throws Exception {
        //最终这个Bean还是由我们自己new的
        return new Person();
    }

    @Override
    public Class<?> getObjectType() {
        return Person.class;
    }

    // 这个方法在接口中有默认实现
    // 默认返回true，表示单例的
    // 如果相多例，直接将这个方法修改为 return false 即可
    @Override
    public boolean isSingleton() {
        return FactoryBean.super.isSingleton();
    }
}
